lst1 = ["太白","日天","哪吒","银王","金王"]
lst2 = lst1
lst1.append("女生")
print(lst1)
print(lst2)  #发下lst1和lst2是一样的,是因为都是指向同一个内存地址


#浅拷贝
lst1 = ["太白","日天","哪吒","银王","金王"]
lst2 = lst1[:]  # 浅拷贝第一种方法,  创建了新的对象,创建对象的速度会很快
lst2 = lst1.copy() #浅拷贝第二种 方法
lst1.append("女生")
print(lst1)
print(lst2)  #发下lst1和lst2是不一样的,是因为指向的不是同一个内存地址



#浅拷贝
lst1 = ["太白","日天",["盖浇饭","锅包肉"],"哪吒","银王","金王"]
#lst2 = lst1[:]  # 浅拷贝第一种方法,  创建了新的对象,创建对象的速度会很快
lst2 = lst1.copy() #浅拷贝第二种 方法
lst1[2].append("油泼面")
print(lst1)
print(lst2)  #发下lst1和lst2是一样的,是因为这里用的浅拷贝,浅拷贝只会拷贝对象,与对象里的指针指向没有关联,也就是里面的第二个列表
#在lst1是以指针方式存储, 浅拷贝只拷贝指针指向,不会拷贝里面的数据,所以是同一个 数据


#深拷贝
import copy
lst1 = ["太白","日天",["盖浇饭","锅包肉"],"哪吒","银王","金王"]
lst2 = copy.deepcopy(lst1)
lst1[2].append("油泼面")
print(lst1)
print(lst2)  #此时深拷贝,发现结果不一样了,lst1添加就和lst2没关系了
print(id(lst1),id(lst2))


#总结:
# 赋值没有创建新对象,多个变量共享同一个对象
# 浅拷贝,会创建新对象,新的对象里面的内容不会被拷贝
# 深拷贝,创建一个一模一样的完全的新的对象,这个对象延伸出来的内容也会跟着复制一份

